#pragma once

struct SDL_Window;
struct SDL_Renderer;
struct SDL_Texture;

namespace ZeEngine
{
    class GameConfiguration;

    class SDLInitializer
    {
    public:
        SDLInitializer();

        virtual bool InitializeSDL( const GameConfiguration& configuration);  
        virtual void DestroySDL();
       
        SDL_Window*     GetWindow() { return m_pWindow; }
        SDL_Renderer*   GetRenderer() { return m_pRenderer; }
        SDL_Texture*    GetWindowTexture() { return m_pWindowTexture; }

    private:
        bool CreateScreen(const GameConfiguration& configuration);
        void SetupScreen(const GameConfiguration& configuration);

    private:
        SDL_Window*      m_pWindow;
        SDL_Renderer*    m_pRenderer;
        SDL_Texture*     m_pWindowTexture;
    };
}